import java.util.Stack;

class MinStack {
    Stack<Integer> stack;
    Stack<Integer> minStack;
    public MinStack(){
        stack=new Stack<>();
        minStack=new Stack<>();
    }

    public void push(int val){
         stack.push(val);
         if(minStack.isEmpty()){
             minStack.push(val);
         }else{
             Integer peekVal=minStack.peek();
             if(val<peekVal){
                 minStack.push(val);
             }
         }
    }
    public void pop(){
        if(stack.isEmpty()){
            return;
        }
        int popVal=minStack.pop();
        if(popVal==minStack.peek()){
            minStack.pop();
        }
    }
    public int top(){
        if(stack.empty()){
            return -1;
        }
        return stack.peek();
    }
    public int getMin(){
        if(minStack.empty()){
            return -1;
        }
        return minStack.peek();
    }
}
